<?php
// 缩略图：先给客户看小图 客户点进去才给发图 
// 作用：减小流量 减小服务器负担
// 原理：将用户图片等比例缩放到一个给定的画布中 

/*给一大图 显示小图
*@param1 $src String 大图
*@param2 $dest_width int 小图的宽
 */
thumbnail('2b.png',200);
function thumbnail($src,$dest_width){
    // 有图片创建画布
    $info_src = getimagesize($src);
    $s_w = $info_src[0];
    $s_h = $info_src[1];
    $img_src = imgToCanvas($src);

    // 等比例计算得到d_h
    $d_h = $s_h/$s_w*$dest_width;

    // 创建画布
    $img_dest = imagecreatetruecolor($dest_width, $d_h);

    // 制作缩略图
    // 参数： 1.目标图片  2.用户图片  3&4.目标图片的某个点  5&6.目标图片的宽高
    //       7&8.用户图片上的某个点  9&10.用户图片的宽高
    // 说明： 在src上从s_x,s_y为起点 截取s_w,s_h的区域放在dest画布的以d_x,d_y为顶点 画在d_w,d_h的区域
    imagecopyresampled($img_dest, $img_src, 0, 0, 0, 0, $dest_width, $d_h, $s_w, $s_h);

    header('Content-type:image/jpeg');
    imagejpeg($img_dest);
}

/*图片变成画布
*@param1 图片的路径
 */
function imgToCanvas($picture){
    $picture_info = getimagesize($picture);
    // echo '<pre>';
    // print_r($dest_info);
    switch ($picture_info['mime']) {
	    case 'image/jpeg':
	    	$img_picture = imagecreatefromjpeg($picture);
	    	break;
        case 'image/png':
	    	$img_picture = imagecreatefrompng($picture);
	    	break;
	    case 'image/gif':
	    	$img_picture = imagecreatefromgif($picture);
	        break;
    }
    return $img_picture;
}
?>